/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package py.una.pol.ii.is2.domain.sistema;

import py.una.pol.ii.is2.domain.taller.OrdenMantenimiento;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author markos
 */
@Entity
@Table(name = "usuario")
@NamedQueries({@NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"), @NamedQuery(name = "Usuario.findByUsuaAlias", query = "SELECT u FROM Usuario u WHERE u.usuaAlias = :usuaAlias"), @NamedQuery(name = "Usuario.findByUsuaContrasena", query = "SELECT u FROM Usuario u WHERE u.usuaContrasena = :usuaContrasena"), @NamedQuery(name = "Usuario.findByUsuaNombre", query = "SELECT u FROM Usuario u WHERE u.usuaNombre = :usuaNombre"), @NamedQuery(name = "Usuario.findByUsuaDocumento", query = "SELECT u FROM Usuario u WHERE u.usuaDocumento = :usuaDocumento"), @NamedQuery(name = "Usuario.findByUsuaDireccion", query = "SELECT u FROM Usuario u WHERE u.usuaDireccion = :usuaDireccion"), @NamedQuery(name = "Usuario.findByUsuaMail", query = "SELECT u FROM Usuario u WHERE u.usuaMail = :usuaMail"), @NamedQuery(name = "Usuario.findByUsuaTelefParticular", query = "SELECT u FROM Usuario u WHERE u.usuaTelefParticular = :usuaTelefParticular"), @NamedQuery(name = "Usuario.findByUsuaTelefMovil", query = "SELECT u FROM Usuario u WHERE u.usuaTelefMovil = :usuaTelefMovil"), @NamedQuery(name = "Usuario.findByUsuaFax", query = "SELECT u FROM Usuario u WHERE u.usuaFax = :usuaFax")})
public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "usua_alias")
    private String usuaAlias;
    @Column(name = "usua_contrasena")
    private String usuaContrasena;
    @Column(name = "usua_nombre")
    private String usuaNombre;
    @Basic(optional = false)
    @Column(name = "usua_documento")
    private String usuaDocumento;
    @Column(name = "usua_direccion")
    private String usuaDireccion;
    @Column(name = "usua_mail")
    private String usuaMail;
    @Column(name = "usua_telef_particular")
    private String usuaTelefParticular;
    @Column(name = "usua_telef_movil")
    private String usuaTelefMovil;
    @Column(name = "usua_fax")
    private String usuaFax;
    @JoinTable(name = "usuario_rol", joinColumns = {@JoinColumn(name = "usro_usuario", referencedColumnName = "usua_alias")},
    inverseJoinColumns = {@JoinColumn(name = "usro_rol", referencedColumnName = "rol_cod")})
    @ManyToMany
    private Collection<Rol> rolCollection;
    @OneToMany(cascade = CascadeType.MERGE, mappedBy = "ormaCodUsuario")
    private Collection<OrdenMantenimiento> ordenMantenimientoCollection;

    public Usuario() {
    }

    public Usuario(String usuaAlias) {
        this.usuaAlias = usuaAlias;
    }

    public Usuario(String usuaAlias, String usuaDocumento) {
        this.usuaAlias = usuaAlias;
        this.usuaDocumento = usuaDocumento;
    }

    public String getUsuaAlias() {
        return usuaAlias;
    }

    public void setUsuaAlias(String usuaAlias) {
        this.usuaAlias = usuaAlias;
    }

    public String getUsuaContrasena() {
        return usuaContrasena;
    }

    public void setUsuaContrasena(String usuaContrasena) {
        this.usuaContrasena = usuaContrasena;
    }

    public String getUsuaNombre() {
        return usuaNombre;
    }

    public void setUsuaNombre(String usuaNombre) {
        this.usuaNombre = usuaNombre;
    }

    public String getUsuaDocumento() {
        return usuaDocumento;
    }

    public void setUsuaDocumento(String usuaDocumento) {
        this.usuaDocumento = usuaDocumento;
    }

    public String getUsuaDireccion() {
        return usuaDireccion;
    }

    public void setUsuaDireccion(String usuaDireccion) {
        this.usuaDireccion = usuaDireccion;
    }

    public String getUsuaMail() {
        return usuaMail;
    }

    public void setUsuaMail(String usuaMail) {
        this.usuaMail = usuaMail;
    }

    public String getUsuaTelefParticular() {
        return usuaTelefParticular;
    }

    public void setUsuaTelefParticular(String usuaTelefParticular) {
        this.usuaTelefParticular = usuaTelefParticular;
    }

    public String getUsuaTelefMovil() {
        return usuaTelefMovil;
    }

    public void setUsuaTelefMovil(String usuaTelefMovil) {
        this.usuaTelefMovil = usuaTelefMovil;
    }

    public String getUsuaFax() {
        return usuaFax;
    }

    public void setUsuaFax(String usuaFax) {
        this.usuaFax = usuaFax;
    }

    public Collection<Rol> getRolCollection() {
        return rolCollection;
    }

    public void setRolCollection(Collection<Rol> rolCollection) {
        this.rolCollection = rolCollection;
    }

    public Collection<OrdenMantenimiento> getOrdenMantenimientoCollection() {
        return ordenMantenimientoCollection;
    }

    public void setOrdenMantenimientoCollection(Collection<OrdenMantenimiento> ordenMantenimientoCollection) {
        this.ordenMantenimientoCollection = ordenMantenimientoCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (usuaAlias != null ? usuaAlias.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.usuaAlias == null && other.usuaAlias != null) || (this.usuaAlias != null && !this.usuaAlias.equals(other.usuaAlias))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "py.una.pol.ii.is2.dao.flota.Usuario[usuaAlias=" + usuaAlias + "]";
    }

}
